home *** CD-ROM | disk | FTP | other *** search
Text File | 2001-09-16 | 33.3 KB | 1,957 lines |
- *******************************************************
- ** XFD external decruncher **
- ** for Magnetic Fields Cruncher **
- ** adapted by Wanted Team **
- *******************************************************
-
- INCLUDE "AINCLUDE:IncDirs.i"
- INCLUDE "libraries/xfdmaster.i"
-
- ; xfdForeman structure MUST be first thing in all external decrunchers
-
- ForeMan moveq #-1,d0 ;security
- rts
- dc.l XFDF_ID ;id
- dc.w 1 ;version
- dc.w 0
- dc.l 0,0 ;private
- dc.l S_SQ ;first slave
-
- **************************************************
-
- ; xfdSlave structure: this one doesn't support data scanning
-
- S_SQ dc.l S_SP ;next slave
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SQ ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SQ ;recog buffer
- dc.l DB_SFSQ ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- S_SP dc.l S_SF ;next slave
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SP ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SP ;recog buffer
- dc.l DB_SCSP ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- S_SF dc.l S_SC ;next slave
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SF ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SF ;recog buffer
- dc.l DB_SFSQ ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- S_SC dc.l S_SA_1 ;next slave
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SC ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SC ;recog buffer
- dc.l DB_SCSP ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- S_SA_1 dc.l S_SA_2 ;next slave
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SA_1 ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SA_1 ;recog buffer
- dc.l DB_SA_1 ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- S_SA_2 dc.l S_SA_3 ;next slave
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SA_2 ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SA_2 ;recog buffer
- dc.l DB_SA_2 ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- S_SA_3 dc.l 0 ;no more slaves
- dc.w 2 ;version
- dc.w 39 ;master version
- dc.l N_SA_3 ;name
- dc.w XFDPFF_DATA!XFDPFF_RECOGLEN!XFDPFF_USERTARGET
- dc.w 0
- dc.l RB_SA_3 ;recog buffer
- dc.l DB_SA_3 ;decrunch buffer
- dc.l 0 ;recog segment
- dc.l 0 ;decrunch segment
- dc.w 0
- dc.w XFDID_SACFPQCruncher
- dc.l 12+2
-
- dc.b "$VER: Magnetic Fields Cruncher 2.1 (09.06.2001) by Wanted Team",0
- N_SA_1 dc.b "Magnetic Fields data cruncher (SA - anim mode 1)",0
- N_SA_2 dc.b "Magnetic Fields data cruncher (SA - anim mode 2)",0
- N_SA_3 dc.b "Magnetic Fields data cruncher (SA - anim mode 3)",0
- N_SC dc.b "Magnetic Fields data cruncher (SC - colours picture mode)",0
- N_SF dc.b "Magnetic Fields data cruncher (SF - data file mode)",0
- N_SP dc.b "Magnetic Fields data cruncher (SP - picture mode)",0
- N_SQ dc.b "Magnetic Fields data cruncher (SQ - sample mode)",0
- even
-
- ;-------------------------------------------------
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SQ
- moveq #0,D0
- cmp.w #"SQ",(A0)+
- bne.b Exit
- tst.b (A0)
- bne.b Exit
- move.l (A0)+,D1
- move.l D1,xfdrr_FinalTargetLen(A1)
- addq.l #7,D1
- and.l #$FFFFFFF8,D1
- moveq #64,D0 ; extra buffer length
- add.l D0,D1
- move.l D1,xfdrr_MinTargetLen(A1)
- move.l (A0),D1
- and.l #$00FFFFFF,D1
- moveq #10,D0
- asl.l #2,D1
- add.l D1,D0
- move.l D0,xfdrr_MinSourceLen(A1)
- moveq #1,D0
- Exit
- rts
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SP move.l D2,-(a7)
- moveq #0,D0
- cmp.w #"SP",(A0)+
- bne.b Exit2
- tst.b (A0)
- bne.b Exit2
- move.w (A0)+,D0
- subq.l #1,D0
- moveq #0,D1
- move.l (A0)+,D2
- dodaj_1
- add.l D2,D1
- dbeq D0,dodaj_1
- move.l D1,xfdrr_FinalTargetLen(A1)
- add.l D1,D1
- add.l #64+16384+8256,D1 ; extra buffer length
- move.l D1,xfdrr_MinTargetLen(A1)
- moveq #12,D2
- add.l (A0),D2
- move.l D2,xfdrr_MinSourceLen(A1)
- moveq #1,D0
- Exit2 move.l (A7)+,D2
- rts
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SF
- moveq #0,D0
- cmp.w #"SF",(A0)+
- bne.b Exit3
- tst.b (A0)
- bne.b Exit3
- move.l (A0)+,D1
- move.l D1,xfdrr_FinalTargetLen(A1)
- moveq #64,D0 ; extra buffer length
- add.l D0,D1
- move.l D1,xfdrr_MinTargetLen(A1)
- tst.b (A0)
- bne.b Exit3
- moveq #10,D0
- add.l (A0),D0
- move.l D0,xfdrr_MinSourceLen(A1)
- moveq #1,D0
- Exit3
- rts
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SC move.l D2,-(A7)
- moveq #0,D0
- cmp.w #"SC",(A0)+
- bne.b Exit4
- tst.b (A0)
- bne.b Exit4
- move.w (A0)+,D0
- subq.l #1,D0
- moveq #0,D1
- move.l (A0)+,D2
- dodaj_2
- add.l D2,D1
- dbeq D0,dodaj_2
- move.l D1,xfdrr_FinalTargetLen(A1)
- add.l D1,D1
- add.l #64+16384+8256,D1 ; extra buffer length
- move.l D1,xfdrr_MinTargetLen(A1)
- moveq #12,D2
- add.l (A0),D2
- move.l D2,xfdrr_MinSourceLen(A1)
- moveq #1,D0
- Exit4 move.l (A7)+,D2
- rts
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SA_2 movem.l D2-D4,-(A7)
- moveq #0,D0
- cmp.w #"SA",(A0)+
- bne.b Exit5
- tst.b (A0)
- bne.b Exit5
- addq.l #2,A0
- moveq #0,D1
- move.w (A0)+,D1
- tst.b (A0)
- bne.b Exit5
- move.l (A0)+,D2
- move.l (A0)+,D3
- cmp.l D3,D2
- ble.b Exit5
- asl.w #3,D1
- move.l 4(A0),D4
- add.l D1,A0
- cmp.l -4(A0),D4
- bne.b Exit5
- cmp.l -12(A0),D4
- bne.b Exit5
- moveq #14,D0
- add.l D1,D0
- add.l D3,D0
- move.l D2,xfdrr_FinalTargetLen(A1)
- add.l #64+16384,D2 ; extra buffer length
- move.l D2,xfdrr_MinTargetLen(A1)
- move.l D0,xfdrr_MinSourceLen(A1)
- moveq #1,D0
- Exit5 movem.l (a7)+,d2-d4
- rts
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SA_3 movem.l D2-D5/A2,-(A7)
- moveq #0,D0
- move.l A0,A2
- cmp.w #"SA",(A2)+
- bne.w Exit6
- tst.b (A2)
- bne.b Exit6
- addq.l #2,A2
- moveq #0,D1
- move.w (A2)+,D1
- tst.b (A2)
- bne.b Exit6
- move.l (A2)+,D2
- move.l (A2)+,D3
- cmp.l D3,D2
- ble.b Exit6
- asl.w #3,D1
- move.l 4(A2),D4
- add.l D1,A2
- cmp.l -4(A2),D4
- bne.b OK_SA
- cmp.l -12(A2),D4
- beq.b Exit6
- OK_SA
- move.l D2,xfdrr_FinalTargetLen(A1)
- add.l #64+16384,D2 ; extra buffer length
- move.l D2,xfdrr_MinTargetLen(A1)
- move.l A0,A2
-
- MOVE.W 4(A0),D4
- ADDA.W #14,A0
- SUBQ.W #1,D4
- rbC0000CC ADDQ.W #4,A0
- MOVE.L (A0)+,D2
- SWAP D2
- LSR.W #8,D2
- MOVE.W D2,D5
- LSR.W #2,D5
- ANDI.W #3,D2
- BEQ.S rbC0000E8
- CMPI.W #3,D2
- BEQ.S rbC0000E8
- ADD.W D2,D2
- BRA.S rbC0000EA
-
- rbC0000E8 MOVEQ #0,D2
- rbC0000EA MOVEQ #5,D0
- rbC0000EC LSR.W #1,D5
- BCC.S rbC0000F2
- ADDQ.W #4,D2
- rbC0000F2 DBRA D0,rbC0000EC
- ADDQ.W #2,D2
- ADDA.W D2,A0
- DBRA D4,rbC0000CC
- sub.l A2,A0
- add.l A0,D3
- move.l D3,xfdrr_MinSourceLen(A1)
- moveq #1,D0
- Exit6 movem.l (a7)+,d2-d5/A2
- rts
-
-
- ; Recog buffer function: receives buffer + length in a0/d0
-
- RB_SA_1 movem.l d2-d3,-(a7)
- moveq #0,D0
- cmp.w #"SA",(A0)+
- bne.b Exit7
- tst.b (A0)
- bne.b Exit7
- move.w (A0)+,D1
- tst.b (A0)
- bne.b Exit7
- move.l (A0)+,D2
- tst.b (A0)
- bne.b Exit7
- move.l (A0)+,D3
- add.l D3,A0
- addq.l #2,A0
- cmp.w (A0)+,D1
- bne.b Exit7
- cmp.l (A0)+,D2
- bne.b Exit7
- tst.w (A0)
- bne.b Exit7
- moveq #20,D0
- add.l (A0),D0
- add.l D3,D0
- move.l D0,xfdrr_MinSourceLen(A1)
- subq.w #1,D1
- moveq #8,D0
- dodaj_3
- add.l D2,D0
- dbeq D1,dodaj_3
- add.l (A0),D0
- move.l D0,xfdrr_FinalTargetLen(A1)
- add.l #64+16384+8256,D0 ; extra buffer length
- move.l D0,xfdrr_MinTargetLen(A1)
- moveq #1,D0
- Exit7 movem.l (a7)+,d2-d3
- rts
-
- ;-------------------------------------------------
-
- ; Decrunch buffer function: receives bufferinfo in a0
- ; This style requires xfdmaster.library V39
-
- DB_SA_1
- movem.l D2-D7/A2-A6,-(A7)
- move.l A0,A5
- move.l xfdbi_UserTargetBuf(A5),A1
- move.l xfdbi_SourceBuffer(A5),A0
- move.l xfdbi_MinSourceLen(A5),D0
- move.l xfdbi_FinalTargetLen(A5),D3
- btst #0,D3
- beq.b even_1
- addq.l #1,D3
- even_1
- lea 0(A1,D3.L),A3
- lea 64(A3),A2
- lea 16384(A2),A5
- move.l D0,$828-$7FC(A3)
- bsr.w D_SA_1
- moveq #1,D0
- movem.l (A7)+,D2-D7/A2-A6
- rts
-
- ;-------------------------------------------------
-
- ; Decrunch buffer function: receives bufferinfo in a0
- ; This style requires xfdmaster.library V39
-
- DB_SA_2
- movem.l D2-D7/A2-A6,-(A7)
- move.l A0,A5
- move.l xfdbi_UserTargetBuf(A5),A1
- move.l xfdbi_SourceBuffer(A5),A0
- move.l xfdbi_MinSourceLen(A5),D0
- move.l xfdbi_FinalTargetLen(A5),D3
- btst #0,D3
- beq.b even_2
- addq.l #1,D3
- even_2
- lea 0(A1,D3.L),A3
- lea 64(A3),A2
- move.l D0,12(A3)
- bsr.w D_SA_2
- moveq #1,D0
- movem.l (A7)+,D2-D7/A2-A6
- rts
-
- ;-------------------------------------------------
-
- ; Decrunch buffer function: receives bufferinfo in a0
- ; This style requires xfdmaster.library V39
-
- DB_SA_3
- movem.l D2-D7/A2-A6,-(A7)
- move.l A0,A5
- move.l xfdbi_UserTargetBuf(A5),A1
- move.l xfdbi_SourceBuffer(A5),A0
- move.l xfdbi_MinSourceLen(A5),D0
- move.l xfdbi_FinalTargetLen(A5),D3
- btst #0,D3
- beq.b even_3
- addq.l #1,D3
- even_3
- lea 0(A1,D3.L),A3
- lea 64(A3),A2
- move.l D0,12(A3)
- bsr.w D_SA_3
- moveq #1,D0
- movem.l (A7)+,D2-D7/A2-A6
- rts
-
- ;-------------------------------------------------
-
- ; Decrunch buffer function: receives bufferinfo in a0
- ; This style requires xfdmaster.library V39
-
- DB_SFSQ
- movem.l D2-D7/A2-A6,-(A7)
- move.l A0,A5
- move.l xfdbi_UserTargetBuf(A5),A1
- move.l xfdbi_SourceBuffer(A5),A0
- move.l xfdbi_MinSourceLen(A5),D0
- move.l xfdbi_UserTargetBufLen(A5),D3
- moveq #64,D2
- sub.l D2,D3
- btst #0,D3
- beq.b even_4
- addq.l #1,D3
- even_4
- lea 0(A1,D3.L),A3
- move.l D0,12(A3)
- bsr.w D_SFSQ
- moveq #1,D0
- movem.l (A7)+,D2-D7/A2-A6
- rts
-
- ;-------------------------------------------------
-
- ; Decrunch buffer function: receives bufferinfo in a0
- ; This style requires xfdmaster.library V39
-
- DB_SCSP
- movem.l D2-D7/A2-A6,-(A7)
- move.l A0,A4
- move.l xfdbi_UserTargetBuf(A4),A1
- move.l xfdbi_SourceBuffer(A4),A0
- move.l xfdbi_MinSourceLen(A4),D0
- move.l xfdbi_TargetBufSaveLen(A4),D3
- add.l D3,D3
- lea 0(A1,D3.L),A3
- lea 64(A3),A2
- lea 16384(A2),A5
- move.l D0,12(A3)
- lsr.l #1,D3
-
- movem.l D0-A6,-(SP)
- bsr.w D_SCSP_2
- movem.l (SP)+,D0-A6
-
- lea 0(A1,D3.L),A1
- move.l D0,12(A3)
-
- movem.l D0-A6,-(SP)
- bsr.w D_SCSP_2
- movem.l (SP)+,D0-A6
-
- movem.l D0-A6,-(SP)
- move.l A1,A2
- sub.l D3,A1
- move.l A2,A0
- CheckData
- cmp.l A1,A0
- beq.b FileOK
- move.b (A2)+,D0
- cmp.b (A1)+,D0
- bne.b Old_Mode
- bra.b CheckData
- FileOK
- cmp.l #640,D3
- bne.b NoExcept1
- cmp.l #'KKK@',154(A0) ; exception 1
- beq.b Old_Mode
- bra.b Correct
- NoExcept1
- cmp.l #40000,D3
- bne.b Correct
- cmp.l #'DDDD',16188(A0) ; exception 2
- beq.b Old_Mode
- Correct
- movem.l (SP)+,D0-A6
- back
- moveq #1,D0
- movem.l (A7)+,D2-D7/A2-A6
- rts
- Old_Mode
- movem.l (SP)+,D0-A6
- move.l D0,$828-$7FC(A3)
- sub.l D3,A1
- bsr.w D_SCSP_1
- bra.b back
-
- ;-------------------------------------------------
-
- ; Decruncher from game "Crystal Dragon" (c) 1994 by Magnetic Fields
-
- *****************************************
- * *
- * descrunch any file *
- * *
- * from a0 to a1 *
- * if pic, 16k buffer needed at a2 *
- * if colrs stored palette goes to d1 *
- * initial size of file in d0 *
- * *
- * first word *
- * *
- * "SA" sout crunched anim file *
- * "SP" sout crunched pic file *
- * "SC" sout crunched pic file + colrs *
- * "SF" sout crunched data file *
- * *
- * returns length descrunched to in d0.l *
- * *
- *****************************************
-
- ; MOVEA.L #lbL06439C,A2
- ; MOVE.L #lbL06839C,D1
-
- ; MOVEM.L D1-D7/A0-A6,-(SP)
- ; LEA lbL00070E,A3
- ; MOVE.L D0,12(A3)
- ; MOVE.W (A0),D0
- ; CMP.W #'SQ',D0
- ; BEQ.L lbC000746
- ; CMP.W #'SA',D0
- ; BEQ.S lbC000086
- ; CMP.W #'SP',D0
- ; BEQ.L lbC000296
- ; CMP.W #'SC',D0
- ; BEQ.L lbC00029C
- ; CMP.W #'SF',D0
- ; BEQ.L lbC0005F2
- ; MOVE.L 12(A3),D7
- ; BEQ.S lbC000046
- ;lbC000040 MOVE.B (A0)+,(A1)+
- ; SUBQ.L #1,D7
- ; BNE.S lbC000040
- ;lbC000046 MOVE.L 12(A3),D0
- ; MOVEM.L (SP)+,D1-D7/A0-A6
- ; RTS
-
- lbC000050 MOVE.W $10(A3),D1
- MOVEQ #0,D7
- lbC000056 ADD.L D0,D0
- BNE.S lbC000062
- MOVE.L -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.L D0,D0
- lbC000062 ROXR.B #1,D7
- DBRA D1,lbC000056
- RTS
-
- lbW00006A dc.w 0
- dc.w 0
- dc.w 0
- dc.w 7
- dc.w 5
- dc.w 4
- dc.w 4
- lbL000078 dc.w 0
- dc.w 0
- dc.w 0
- dc.w 4
- dc.w 4
- dc.w 3
- dc.w 3
-
- D_SA_3
- lbC000086
- movem.l D1-D7/A0-A6,-(SP)
-
- MOVEA.L A1,A4
- MOVE.L A1,(A3)
- MOVE.W 2(A0),$10(A3)
- MOVE.W 4(A0),$18(A3)
- MOVE.L 6(A0),D1
- MOVE.L D1,4(A3)
- MOVE.W $10(A3),D0
- ADD.W D0,D0
- LEA lbW00006A(PC),A1
- MOVE.W 0(A1,D0.W),$14(A3)
- LEA lbL000078(PC),A1
- MOVE.W 0(A1,D0.W),$12(A3)
- MOVE.L 10(A0),D0
- ADDA.W #14,A0
- MOVE.W $18(A3),D4
- SUBQ.W #1,D4
- MOVE.L D0,-(SP)
- lbC0000CC ADDQ.W #4,A0
- MOVE.L (A0)+,D2
- SWAP D2
- LSR.W #8,D2
- MOVE.W D2,D5
- LSR.W #2,D5
- ANDI.W #3,D2
- BEQ.S lbC0000E8
- CMPI.W #3,D2
- BEQ.S lbC0000E8
- ADD.W D2,D2
- BRA.S lbC0000EA
-
- lbC0000E8 MOVEQ #0,D2
- lbC0000EA MOVEQ #5,D0
- lbC0000EC LSR.W #1,D5
- BCC.S lbC0000F2
- ADDQ.W #4,D2
- lbC0000F2 DBRA D0,lbC0000EC
- ADDQ.W #2,D2
- ADDA.W D2,A0
- DBRA D4,lbC0000CC
- MOVE.L (SP)+,D0
- MOVEA.L A0,A1
- ADDA.L D0,A0
- MOVE.W $10(A3),(A4)
- ADDA.L D1,A4
- CLR.W $1A(A3)
- SUBQ.W #1,$10(A3)
- MOVEQ #0,D2
- MOVE.W #$4000,D4
- MOVE.W #$4000,D5
- MOVE.L -(A0),D0
- lbC00011E MOVE.W -(A1),D1
- BPL.S lbC000124
- MOVEQ #0,D1
- lbC000124 ADDQ.W #8,D1
- SUBA.W D1,A1
- MOVE.L A1,-(SP)
- MOVEM.L D0-D7,-(SP)
- MOVE.L A1,-(SP)
- MOVE.W (A1),D1
- MOVE.W 2(A1),D2
- MOVE.W D1,D3
- ADDI.W #15,D3
- LSR.W #4,D3
- MULU.W D2,D3
- ADD.W D3,D3
- EXT.L D3
- MOVE.L D3,8(A3)
- MOVE.L 4(A1),D7
- MOVE.L D7,D6
- BSR.L lbC000252
- MOVE.W D7,$1C(A3)
- MOVEA.L A4,A1
- MOVE.W $1C(A3),D4
- MOVE.L 8(A3),D5
- MULU.W D5,D4
- SUBA.L D4,A1
- MOVEA.L A1,A4
- ADDA.L 8(A3),A4
- MOVE.L (SP)+,D0
- MOVEM.L A1/A4,-(SP)
- MOVEA.L D0,A4
- ADDQ.W #8,A4
- MOVE.L D6,D0
- SWAP D0
- LSR.W #8,D0
- MOVE.W D0,-(SP)
- ANDI.W #3,D0
- BEQ.S lbC00018E
- CMPI.W #3,D0
- BEQ.S lbC00018C
- ADD.W D0,D0
- BRA.S lbC00018E
-
- lbC00018C MOVEQ #0,D0
- lbC00018E MOVE.W D0,$1E(A3)
- MOVE.W (SP)+,D0
- LSR.W #2,D0
- MOVE.W #6,-(SP)
- lbC00019A LSR.W #1,D0
- BCC.S lbC0001A2
- ADDQ.W #4,$1E(A3)
- lbC0001A2 SUBQ.W #1,(SP)
- BNE.S lbC00019A
- ADDQ.W #2,SP
- MOVE.W $1E(A3),D0
- ADDA.W D0,A4
- TST.W D0
- BEQ.S lbC0001B8
- lbC0001B2 MOVE.W -(A4),-(A1)
- SUBQ.W #2,D0
- BNE.S lbC0001B2
- lbC0001B8 MOVE.L D6,-(A1)
- MOVE.W D3,-(A1)
- MOVE.W D2,-(A1)
- MOVE.W D1,-(A1)
- MOVEA.L (A3),A4
- MOVE.W $18(A3),D4
- SUB.W $1A(A3),D4
- SUBQ.W #1,D4
- LSL.W #2,D4
- MOVE.L A1,D5
- SUB.L A4,D5
- MOVE.L D5,2(A4,D4.W)
- MOVEM.L (SP)+,A1/A4
- MOVEM.L (SP)+,D0-D7
- MOVE.W $1C(A3),D7
- BNE.S lbC0001EA
- MOVEA.L A1,A4
- BRA.S lbC00022C
-
- lbC0001EA ADD.W D7,D7
- ADD.W D7,D7
- LEA lbW000498(PC),A6
- ADDA.L (A6,D7.W),A6
- lbC0001F6 MOVEQ #4,D1
- BSR.L lbC0003A0
- ADD.W D7,D7
- ADD.W D7,D7
- MOVE.L A1,-(SP)
- LEA lbL000360(PC),A1
- ADDA.L (A1,D7.W),A1
- JSR (A1)
- MOVEA.L (SP)+,A1
- lbC00020E CMPA.L A4,A1
- BEQ.S lbC00022C
- CMP.W #$10,D2
- BCS.S lbC0001F6
- SUBI.W #$10,D5
- ANDI.W #$3FF0,D5
- LEA (A2,D5.W),A5
- SUBI.W #$10,D2
- JSR (A6)
- BRA.S lbC00020E
-
- lbC00022C MOVE.W $1E(A3),D1
- SUBA.W D1,A4
- SUBA.W #10,A4
- MOVEA.L (SP)+,A1
- ADDQ.W #1,$1A(A3)
- MOVE.W $1A(A3),D1
- CMP.W $18(A3),D1
- BNE.L lbC00011E
- MOVE.L 4(A3),D0
- MOVEM.L (SP)+,D1-D7/A0-A6
- RTS
-
- lbC000252 MOVEM.L D0-D6/A2,-(SP)
- MOVEQ #1,D2
- MOVE.L D7,D1
- CLR.W D1
- ROL.L #8,D1
- MOVE.W D1,D3
- LSR.W #3,D1
- ANDI.W #7,D3
- BEQ.S lbC00026A
- SUBQ.W #1,D2
- lbC00026A MOVEQ #-1,D0
- MOVEQ #5,D6
- lbC00026E MOVE.W D7,D4
- ANDI.W #15,D4
- CMP.W #7,D4
- BPL.S lbC000286
- CMP.W D0,D4
- BLE.S lbC000286
- MOVE.W D4,D0
- LSR.W #1,D1
- BCS.S lbC000286
- ADDQ.W #1,D2
- lbC000286 LSR.L #4,D7
- DBRA D6,lbC00026E
- MOVEQ #0,D7
- MOVE.W D2,D7
- MOVEM.L (SP)+,D0-D6/A2
- RTS
-
- D_SCSP_2
- movem.l D1-D7/A0-A6,-(SP)
- cmp.w #'SC',(A0)
- beq.b lbC00029C
-
- lbC000296 CLR.W $16(A3)
- BRA.S lbC0002A2
-
- lbC00029C MOVE.W #1,$16(A3)
- lbC0002A2
- ; MOVEA.L D1,A5
- MOVEA.L A1,A4
- ADDQ.W #2,A0
- MOVE.W (A0)+,$10(A3)
- MOVE.L (A0)+,8(A3)
- MOVE.W $10(A3),D0
- ADD.W D0,D0
- LEA lbW00006A(PC),A1
- MOVE.W 0(A1,D0.W),$14(A3)
- LEA lbL000078(PC),A1
- MOVE.W 0(A1,D0.W),$12(A3)
- MOVE.L (A0)+,D0
- TST.W $16(A3)
- BEQ.S lbC0002E2
- MOVEQ #0,D1
- MOVE.W $10(A3),D2
- BSET D2,D1
- SUBQ.W #1,D1
- lbC0002DC MOVE.W (A0)+,(A5)+
- DBRA D1,lbC0002DC
- lbC0002E2 ADDA.L D0,A0
- CLR.L 4(A3)
- MOVEA.L A4,A1
- ADDA.L 8(A3),A4
- MOVE.W $10(A3),D7
- MOVEQ #0,D0
- lbC0002F4 ADD.L 8(A3),D0
- SUBQ.W #1,D7
- BNE.S lbC0002F4
- ADD.L D0,4(A3)
- SUBQ.W #1,$10(A3)
- MOVE.W $10(A3),D7
- ADDQ.W #1,D7
- ADD.W D7,D7
- ADD.W D7,D7
- LEA lbW000498(PC),A6
- ADDA.L 0(A6,D7.W),A6
- MOVEQ #0,D2
- MOVE.W #$4000,D4
- MOVE.W #$4000,D5
- MOVE.L -(A0),D0
- lbC000322 MOVEQ #4,D1
- BSR.S lbC0003A0
- ADD.W D7,D7
- ADD.W D7,D7
- MOVE.L A1,-(SP)
- LEA lbL000360(PC),A1
- ADDA.L 0(A1,D7.W),A1
- JSR (A1)
- MOVEA.L (SP)+,A1
- lbC000338 CMPA.L A4,A1
- BEQ.S lbC000356
- CMP.W #$10,D2
- BCS.S lbC000322
- SUBI.W #$10,D5
- ANDI.W #$3FF0,D5
- LEA 0(A2,D5.W),A5
- SUBI.W #$10,D2
- JSR (A6)
- BRA.S lbC000338
-
- lbC000356 MOVEM.L (SP)+,D1-D7/A0-A6
- MOVE.L 4(A3),D0
- RTS
-
- lbL000360 dc.l Label_1-lbL000360
- dc.l Label_2-lbL000360
- dc.l Label_3-lbL000360
- dc.l Label_4-lbL000360
- dc.l Label_5-lbL000360
- dc.l Label_6-lbL000360
- dc.l Label_7-lbL000360
- dc.l Label_8-lbL000360
- dc.l Label_9-lbL000360
- dc.l Label_10-lbL000360
- dc.l Label_11-lbL000360
- dc.l Label_12-lbL000360
- dc.l Label_13-lbL000360
- dc.l Label_14-lbL000360
- dc.l Label_15-lbL000360
- dc.l Label_16-lbL000360
-
- lbC0003A0 SUBQ.W #1,D1
- MOVEQ #0,D7
- lbC0003A4 ADD.L D0,D0
- BNE.S lbC0003B0
- MOVE.L -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.L D0,D0
- lbC0003B0 ADDX.W D7,D7
- DBRA D1,lbC0003A4
- RTS
-
- Label_1
- MOVEQ #0,D6
- BRA.S lbC00040A
- Label_2
- MOVEQ #1,D6
- BRA.S lbC00040A
- Label_3
- MOVEQ #2,D6
- BRA.S lbC00040A
- Label_4
- MOVEQ #3,D6
- BRA.S lbC00040A
- Label_5
- MOVEQ #4,D6
- BRA.S lbC00040A
- Label_6
- MOVEQ #5,D6
- BRA.S lbC00040A
- Label_7
- MOVEQ #1,D1
- BSR.S lbC0003A0
- MOVEQ #6,D6
- ADD.W D7,D6
- BRA.S lbC00040A
- Label_8
- MOVEQ #1,D1
- BSR.S lbC0003A0
- MOVEQ #8,D6
- ADD.W D7,D6
- BRA.S lbC00040A
- Label_9
- MOVEQ #2,D1
- BSR.S lbC0003A0
- MOVEQ #10,D6
- ADD.W D7,D6
- BRA.S lbC00040A
- Label_10
- MOVEQ #3,D1
- BSR.S lbC0003A0
- MOVEQ #14,D6
- ADD.W D7,D6
- BRA.S lbC00040A
- Label_11
- MOVEQ #5,D1
- BSR.S lbC0003A0
- MOVEQ #$16,D6
- ADD.W D7,D6
- BRA.S lbC00040A
- Label_12
- MOVEQ #8,D1
- BSR.S lbC0003A0
- MOVEQ #$36,D6
- ADD.W D7,D6
- lbC00040A ADD.W $14(A3),D6
- MOVEQ #1,D1
- BSR.S lbC0003A0
- MOVEQ #14,D1
- TST.W D7
- BNE.S lbC00041A
- MOVEQ #9,D1
- lbC00041A BSR.S lbC0003A0
- ADD.W D4,D7
- MOVE.W D7,D3
- ANDI.W #$3FFF,D3
- SUBQ.W #1,D6
- lbC000426 SUBQ.W #1,D3
- ANDI.W #$3FFF,D3
- MOVE.B 0(A2,D3.W),D7
- SUBQ.W #1,D4
- ANDI.W #$3FFF,D4
- MOVE.B D7,0(A2,D4.W)
- ADDQ.L #1,D2
- DBRA D6,lbC000426
- RTS
- Label_13
- MOVEQ #4,D1
- BSR.L lbC0003A0
- MOVE.W D7,D6
- BRA.S lbC000456
- Label_14
- MOVEQ #8,D1
- BSR.L lbC0003A0
- MOVEQ #$10,D6
- ADD.W D7,D6
- lbC000456 ADD.W $12(A3),D6
- BSR.L lbC000050
- SUBQ.W #1,D6
- lbC000460 SUBQ.W #1,D4
- ANDI.W #$3FFF,D4
- MOVE.B D7,0(A2,D4.W)
- ADDQ.L #1,D2
- DBRA D6,lbC000460
- RTS
- Label_15
- MOVEQ #1,D6
- BRA.S lbC000480
- Label_16
- MOVEQ #3,D1
- BSR.L lbC0003A0
- MOVEQ #2,D6
- ADD.W D7,D6
- lbC000480 SUBQ.W #1,D6
- lbC000482 BSR.L lbC000050
- SUBQ.W #1,D4
- ANDI.W #$3FFF,D4
- MOVE.B D7,0(A2,D4.W)
- ADDQ.L #1,D2
- DBRA D6,lbC000482
- RTS
-
- lbW000498
- dc.l Label_23-lbW000498
- dc.l Label_22-lbW000498
- dc.l Label_21-lbW000498
- dc.l Label_20-lbW000498
- dc.l Label_19-lbW000498
- dc.l Label_18-lbW000498
- dc.l Label_17-lbW000498
-
- Label_17
- MOVEM.L D0/D2/D4/D5,-(SP)
- MOVEQ #15,D0
- lbC0004BA MOVE.B (A5)+,D1
- ADD.B D1,D1
- ADDX.W D2,D2
- ADD.B D1,D1
- ADDX.W D3,D3
- ADD.B D1,D1
- ADDX.W D4,D4
- ADD.B D1,D1
- ADDX.W D5,D5
- ADD.B D1,D1
- ADDX.W D6,D6
- ADD.B D1,D1
- ADDX.W D7,D7
- DBRA D0,lbC0004BA
- MOVE.L 8(A3),D1
- MOVE.W D2,-(A4)
- ADDA.L D1,A4
- MOVE.W D3,(A4)
- ADDA.L D1,A4
- MOVE.W D4,(A4)
- ADDA.L D1,A4
- MOVE.W D5,(A4)
- ADDA.L D1,A4
- MOVE.W D6,(A4)
- ADDA.L D1,A4
- MOVE.W D7,(A4)
- SUBA.L D1,A4
- SUBA.L D1,A4
- SUBA.L D1,A4
- SUBA.L D1,A4
- SUBA.L D1,A4
- MOVEM.L (SP)+,D0/D2/D4/D5
- RTS
-
- Label_18
- MOVEM.L D0/D2/D4/D5,-(SP)
- MOVEQ #15,D0
- lbC000508 MOVE.B (A5)+,D1
- ADD.B D1,D1
- ADDX.W D2,D2
- ADD.B D1,D1
- ADDX.W D3,D3
- ADD.B D1,D1
- ADDX.W D4,D4
- ADD.B D1,D1
- ADDX.W D5,D5
- ADD.B D1,D1
- ADDX.W D6,D6
- DBRA D0,lbC000508
- MOVE.L 8(A3),D1
- MOVE.W D2,-(A4)
- ADDA.L D1,A4
- MOVE.W D3,(A4)
- ADDA.L D1,A4
- MOVE.W D4,(A4)
- ADDA.L D1,A4
- MOVE.W D5,(A4)
- ADDA.L D1,A4
- MOVE.W D6,(A4)
- SUBA.L D1,A4
- SUBA.L D1,A4
- SUBA.L D1,A4
- SUBA.L D1,A4
- MOVEM.L (SP)+,D0/D2/D4/D5
- RTS
-
- Label_19
- MOVEM.L D0/D2/D4/D5,-(SP)
- MOVEQ #15,D0
- lbC00054C MOVE.B (A5)+,D1
- ADD.B D1,D1
- ADDX.W D2,D2
- ADD.B D1,D1
- ADDX.W D3,D3
- ADD.B D1,D1
- ADDX.W D4,D4
- ADD.B D1,D1
- ADDX.W D5,D5
- DBRA D0,lbC00054C
- MOVE.L 8(A3),D1
- MOVE.W D2,-(A4)
- ADDA.L D1,A4
- MOVE.W D3,(A4)
- ADDA.L D1,A4
- MOVE.W D4,(A4)
- ADDA.L D1,A4
- MOVE.W D5,(A4)
- SUBA.L D1,A4
- SUBA.L D1,A4
- SUBA.L D1,A4
- MOVEM.L (SP)+,D0/D2/D4/D5
- RTS
-
- Label_20
- MOVEM.L D0/D2/D4,-(SP)
- MOVEQ #15,D0
- lbC000586 MOVE.B (A5)+,D1
- ADD.B D1,D1
- ADDX.W D2,D2
- ADD.B D1,D1
- ADDX.W D3,D3
- ADD.B D1,D1
- ADDX.W D4,D4
- DBRA D0,lbC000586
- MOVE.L 8(A3),D1
- MOVE.W D2,-(A4)
- ADDA.L D1,A4
- MOVE.W D3,(A4)
- ADDA.L D1,A4
- MOVE.W D4,(A4)
- SUBA.L D1,A4
- SUBA.L D1,A4
- MOVEM.L (SP)+,D0/D2/D4
- RTS
-
- Label_21
- MOVEM.L D0/D2/D4,-(SP)
- MOVEQ #15,D0
- lbC0005B6 MOVE.B (A5)+,D1
- ADD.B D1,D1
- ADDX.W D2,D2
- ADD.B D1,D1
- ADDX.W D3,D3
- DBRA D0,lbC0005B6
- MOVE.L 8(A3),D1
- MOVE.W D2,-(A4)
- ADDA.L D1,A4
- MOVE.W D3,(A4)
- SUBA.L D1,A4
- MOVEM.L (SP)+,D0/D2/D4
- RTS
-
- Label_22
- MOVEM.L D0/D2/D4,-(SP)
- MOVEQ #15,D0
- lbC0005DC MOVE.B (A5)+,D1
- ADD.B D1,D1
- ADDX.W D2,D2
- DBRA D0,lbC0005DC
- MOVE.L 8(A3),D1
- MOVE.W D2,-(A4)
- MOVEM.L (SP)+,D0/D2/D4
- Label_23
- RTS
-
- D_SFSQ
- movem.l D1-D7/A0-A6,-(SP)
- cmp.w #'SQ',(A0)
- beq.w lbC000746
-
- lbC0005F2 MOVEA.L A1,A4
- MOVEA.L A0,A2
- LEA 10(A2),A1
- MOVEA.L A4,A5
- MOVE.L 2(A0),D0
- MOVEA.L D0,A6
- ADDA.L D0,A4
- MOVE.L 6(A0),D2
- ADDA.L D2,A0
- MOVE.L D2,D7
- ADDQ.L #3,D7
- LSR.L #2,D7
- SUBQ.L #1,D7
- lbC000612 MOVE.L (A1)+,(A2)+
- DBRA D7,lbC000612
- MOVE.B -(A0),D0
- lbC00061A ADD.B D0,D0
- BNE.S lbC000626
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC000626 BCC.L lbC0006CC
- ADD.B D0,D0
- BNE.S lbC000636
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC000636 BCC.S lbC000698
- ADD.B D0,D0
- BNE.S lbC000644
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC000644 BCC.S lbC00069E
- ADD.B D0,D0
- BNE.S lbC000652
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC000652 BCC.S lbC0006A4
- ADD.B D0,D0
- BNE.S lbC000660
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC000660 BCC.S lbC000666
- MOVEQ #9,D4
- BRA.S lbC000668
-
- lbC000666 MOVEQ #14,D4
- lbC000668 MOVEQ #1,D2
- MOVEQ #1,D3
- MOVEQ #5,D5
- lbC00066E MOVE.W D2,D1
- SUBQ.W #1,D1
- MOVEQ #0,D7
- lbC000674 ADD.B D0,D0
- BNE.S lbC000680
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC000680 ADDX.W D7,D7
- DBRA D1,lbC000674
- ADD.W D7,D5
- CMP.W D3,D7
- BNE.S lbC000694
- ADDQ.W #1,D2
- ADD.W D3,D3
- ADDQ.W #1,D3
- BRA.S lbC00066E
-
- lbC000694 MOVE.W D4,D1
- BRA.S lbC0006A8
-
- lbC000698 MOVEQ #9,D1
- MOVEQ #2,D5
- BRA.S lbC0006A8
-
- lbC00069E MOVEQ #10,D1
- MOVEQ #3,D5
- BRA.S lbC0006A8
-
- lbC0006A4 MOVEQ #12,D1
- MOVEQ #4,D5
- lbC0006A8 SUBQ.W #1,D1
- MOVEQ #0,D7
- lbC0006AC ADD.B D0,D0
- BNE.S lbC0006B8
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC0006B8 ADDX.W D7,D7
- DBRA D1,lbC0006AC
- LEA 0(A4,D7.W),A2
- SUBQ.W #1,D5
- lbC0006C4 MOVE.B -(A2),-(A4)
- DBRA D5,lbC0006C4
- BRA.S lbC000700
-
- lbC0006CC MOVEQ #1,D2
- MOVEQ #1,D3
- MOVEQ #1,D6
- lbC0006D2 MOVE.W D2,D1
- SUBQ.W #1,D1
- MOVEQ #0,D7
- lbC0006D8 ADD.B D0,D0
- BNE.S lbC0006E4
- MOVE.B -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.B D0,D0
- lbC0006E4 ADDX.W D7,D7
- DBRA D1,lbC0006D8
- ADD.W D7,D6
- CMP.W D3,D7
- BNE.S lbC0006F8
- ADDQ.W #1,D2
- ADD.W D3,D3
- ADDQ.W #1,D3
- BRA.S lbC0006D2
-
- lbC0006F8 SUBQ.W #1,D6
- lbC0006FA MOVE.B -(A0),-(A4)
- DBRA D6,lbC0006FA
- lbC000700 CMPA.L A5,A4
- BNE.L lbC00061A
- MOVE.L A6,D0
- MOVEM.L (SP)+,D1-D7/A0-A6
- RTS
-
- ;lbL00070E dc.l 0
- ; dc.l 0
- ; dc.l 0
- ; dc.l 0
- ; dc.l 0
- ; dc.l 0
- ; dc.l 0
- ; dc.l 0
-
- lbC00072E SUBQ.W #1,D1
- MOVEQ #0,D7
- lbC000732 ADD.L D0,D0
- BNE.S lbC00073E
- MOVE.L -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.L D0,D0
- lbC00073E ADDX.W D7,D7
- DBRA D1,lbC000732
- RTS
-
- lbC000746 MOVEA.L A1,A2
- ADDQ.l #2,A0
- MOVE.L (A0)+,D0
- MOVE.L D0,-(SP)
- ADDQ.l #7,D0
- ANDI.L #$FFFFFFF8,D0
- ADDA.L D0,A1
- MOVE.L (A0)+,D0
- MOVE.L D0,D1
- ANDI.L #$FFFFFF,D0
- LSL.L #2,D0
- ADDA.L D0,A0
- MOVE.L -(A0),D0
- LSR.L #8,D1
- SWAP D1
- MOVE.W D1,-(SP)
- MOVEQ #3,D1
- BSR.S lbC00072E
- MOVE.W D7,D6
- ADDQ.W #1,D6
- lbC000776 MOVE.W #7,D5
- lbC00077A MOVE.W D6,D1
- BSR.S lbC00072E
- MOVE.B D7,-(A1)
- DBRA D5,lbC00077A
- MOVEQ #0,D4
- lbC000786 ADD.L D0,D0
- BNE.S lbC000792
- MOVE.L -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.L D0,D0
- lbC000792 BCC.S lbC000798
- ADDQ.W #1,D4
- BRA.S lbC000786
-
- lbC000798 ADDQ.W #1,D4
- LSR.W #1,D4
- BCS.S lbC0007A0
- NEG.W D4
- lbC0007A0 SUB.W D4,D6
- CMPA.L A2,A1
- BNE.S lbC000776
- MOVE.W (SP)+,D1
- MOVE.L (SP),D0
- CMP.W #1,D1
- BEQ.S lbC0007F8
- CMP.W #2,D1
- BEQ.S lbC0007BC
- CMP.W #3,D1
- BEQ.S lbC0007D8
- lbC0007BC MOVEQ #0,D4
- lbC0007BE MOVE.B (A2),D1
- LSR.B #1,D1
- BCC.S lbC0007C8
- NEG.B D1
- SUBQ.B #1,D1
- lbC0007C8 ADD.B D1,D4
- MOVE.B D4,(A2)+
- SUBQ.L #1,D0
- BNE.S lbC0007BE
- MOVE.L (SP)+,D0
- MOVEM.L (SP)+,D1-D7/A0-A6
- RTS
-
- lbC0007D8 MOVEQ #0,D4
- MOVEQ #0,D5
- lbC0007DC MOVE.B (A2),D1
- LSR.B #1,D1
- BCC.S lbC0007E6
- NEG.B D1
- SUBQ.B #1,D1
- lbC0007E6 ADD.B D1,D4
- ADD.B D4,D5
- MOVE.B D5,(A2)+
- SUBQ.L #1,D0
- BNE.S lbC0007DC
- MOVE.L (SP)+,D0
- MOVEM.L (SP)+,D1-D7/A0-A6
- RTS
-
- lbC0007F8 MOVEQ #0,D4
- lbC0007FA MOVE.B (A2),D1
- LSR.B #1,D1
- BCC.S lbC000804
- NEG.B D1
- SUBQ.B #1,D1
- lbC000804 MOVE.B D1,(A2)+
- SUBQ.L #1,D0
- BNE.S lbC0007FA
- MOVE.L (SP)+,D0
- MOVEM.L (SP)+,D1-D7/A0-A6
- RTS
-
- ; Modified SA decruncher from game "Kid Chaos" (c) 1993 by Magnetic Fields
-
- D_SA_2
- movem.l D1-D7/A0-A6,-(SP)
-
- MOVEA.L A1,A4
- MOVE.L A1,(A3)
- MOVE.W 2(A0),$10(A3)
- MOVE.W 4(A0),$18(A3)
- MOVE.L 6(A0),D1
- MOVE.L D1,4(A3)
- MOVE.W $10(A3),D0
- ADD.W D0,D0
- LEA lbW00006A(PC),A1
- MOVE.W 0(A1,D0.W),$14(A3)
- LEA lbL000078(PC),A1
- MOVE.W 0(A1,D0.W),$12(A3)
- MOVE.L 10(A0),D0
- ADDA.W #14,A0
- MOVE.W $18(A3),D2
- ASL.W #3,D2
- ADDA.W D2,A0
- MOVEA.L A0,A1
- ADDA.L D0,A0
- MOVE.W $10(A3),(A4)
- ADDA.L D1,A4
- CLR.W $1A(A3)
- SUBQ.W #1,$10(A3)
- MOVEQ #0,D2
- MOVE.W #$4000,D4
- MOVE.W #$4000,D5
- MOVE.L -(A0),D0
- abC001A36 SUBQ.L #8,A1
- MOVE.L A1,-(SP)
- MOVEM.L D0-D7,-(SP)
- MOVE.W (A1),D1
- MOVE.W 2(A1),D2
- MOVE.W D1,D3
- ADDI.W #15,D3
- LSR.W #4,D3
- MULU.W D2,D3
- ADD.W D3,D3
- EXT.L D3
- MOVE.L D3,8(A3)
- MOVE.L 4(A1),D7
- MOVE.L D7,D6
- BSR.L abC001B0A
- MOVE.W D7,$1C(A3)
- MOVEA.L A4,A1
- MOVE.W $1C(A3),D4
- MOVE.L 8(A3),D5
- MULU.W D5,D4
- SUBA.L D4,A1
- MOVEA.L A1,A4
- ADDA.L 8(A3),A4
- SUBA.W #10,A1
- MOVE.L A4,-(SP)
- MOVEA.L (A3),A4
- MOVE.W $18(A3),D4
- SUB.W $1A(A3),D4
- SUBQ.W #1,D4
- LSL.W #2,D4
- MOVE.L A1,D5
- SUB.L A4,D5
- MOVE.L D5,2(A4,D4.W)
- MOVEA.L (SP)+,A4
- MOVE.W D1,(A1)+
- MOVE.W D2,(A1)+
- MOVE.W D3,(A1)+
- MOVE.L D6,(A1)+
- MOVEM.L (SP)+,D0-D7
- MOVE.W $1C(A3),D7
- ADD.W D7,D7
- ADD.W D7,D7
- LEA lbW000498(PC),A6
- ADDA.L 0(A6,D7.W),A6
- abC001AB4 MOVEQ #4,D1
- BSR.L lbC0003A0
- ADD.W D7,D7
- ADD.W D7,D7
- MOVE.L A1,-(SP)
- LEA lbL000360(PC),A1
- ADDA.L 0(A1,D7.W),A1
- JSR (A1)
- MOVEA.L (SP)+,A1
- abC001ACC CMPA.L A4,A1
- BEQ.S abC001AEA
- CMP.W #$10,D2
- BCS.S abC001AB4
- SUBI.W #$10,D5
- ANDI.W #$3FF0,D5
- LEA 0(A2,D5.W),A5
- SUBI.W #$10,D2
- JSR (A6)
- BRA.S abC001ACC
-
- abC001AEA SUBA.W #10,A4
- MOVEA.L (SP)+,A1
- ADDQ.W #1,$1A(A3)
- MOVE.W $1A(A3),D1
- CMP.W $18(A3),D1
- BNE.L abC001A36
- MOVEM.L (SP)+,D1-D7/A0-A6
- MOVE.L 4(A3),D0
- RTS
-
- abC001B0A MOVEM.L D0-D6/A2,-(SP)
- MOVE.W $10(A3),D6
- MOVEQ #-1,D2
- abC001B14 MOVE.L D7,D0
- ANDI.W #15,D0
- CMP.W #7,D0
- BPL.S abC001B26
- CMP.W D2,D0
- BMI.S abC001B26
- MOVE.W D0,D2
- abC001B26 LSR.L #4,D7
- SUBQ.W #1,D6
- BNE.S abC001B14
- ADDQ.W #1,D2
- ADDQ.W #1,D2
- MOVE.W D2,D7
- MOVEM.L (SP)+,D0-D6/A2
- RTS
-
- ; Decruncher from game "Lotus 2" (c) 1991 by Magnetic Fields
-
- ; MOVEA.L #lbL06439C,A2
- ; MOVE.L #lbL06839C,D1
- ; lea Extra,A3
- ; CLR.W $7FC-$7FC(A3)
- ; MOVE.L D0,$828-$7FC(A3)
- ; MOVEA.L D1,A5
- ; MOVE.W (A0),D0
- ; CMPI.W #'SA',D0
- ; BEQ.S nlC000736
- ; CMPI.W #'SP',D0
- ; BEQ.S nlC000736
- ; CMPI.W #'SC',D0
- ; BEQ.S nlC00073C
- ; CMPI.W #$5346,D0
- ; BEQ.L nlC000A66
- ; MOVE.L $828-$7FC(A3),D7
- ; BEQ.S nlC00070E
- ;nlC000708 MOVE.B (A0)+,(A1)+
- ; SUBQ.L #1,D7
- ; BNE.S nlC000708
- ;nlC00070E MOVE.L $828-$7FC(A3),D0
- ; RTS
-
- nlC000714 MOVE.W $820-$7FC(A3),D1
- MOVEQ #0,D7
- nlC00071A ADD.L D0,D0
- BNE.S nlC000726
- MOVE.L -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.L D0,D0
- nlC000726 ROXR.B #1,D7
- DBRA D1,nlC00071A
- RTS
-
- nlW00072E dc.w $705
- dc.w $404
- dc.w $404
- dc.w $303
-
- D_SCSP_1
- cmp.w #'SC',(A0)
- beq.b nlC00073C
- D_SA_1
- nlC000736 CLR.W $822-$7FC(A3)
- BRA.S nlC000742
-
- nlC00073C MOVE.W #1,$822-$7FC(A3)
- nlC000742 MOVEM.L D1-D7/A0-A6,-(SP)
- ; MOVEA.L D1,A5
- MOVEA.L A1,A4
- MOVEQ #0,D7
- CMPI.W #'SA',(A0)+
- BNE.S nlC000754
- MOVEQ #-1,D7
- nlC000754 MOVE.W (A0)+,$820-$7FC(A3)
- ; MOVE.L (A0)+,$82C-$7FC(A3)
-
- move.l (A0)+,8(A3)
-
- MOVE.W $820-$7FC(A3),D0
- LEA nlW00072E(PC),A1
- CLR.B $824-$7FC(A3)
- CLR.B $826-$7FC(A3)
- MOVE.B -3(A1,D0.W),$825-$7FC(A3)
- MOVE.B 1(A1,D0.W),$827-$7FC(A3)
- MOVE.L (A0)+,D0
- TST.W $822-$7FC(A3)
- BEQ.S nlC000790
- MOVEQ #0,D1
- MOVE.W $820-$7FC(A3),D2
- BSET D2,D1
- SUBQ.W #1,D1
- nlC00078A MOVE.W (A0)+,(A5)+
- DBRA D1,nlC00078A
- nlC000790 ADDA.L D0,A0
- CLR.L $830-$7FC(A3)
- TST.L D7
- BEQ.S nlC0007AC
- MOVEA.L A0,A1
- MOVE.L 8(A1),D0
- ADDQ.L #8,D0
- MOVE.L D0,$830-$7FC(A3)
- nlC0007A6 MOVE.B (A1)+,(A4)+
- SUBQ.L #1,D0
- BNE.S nlC0007A6
- nlC0007AC MOVEA.L A4,A1
- ; ADDA.L $82C-$7FC(A3),A4
-
- add.l 8(A3),A4
-
- MOVE.W $820-$7FC(A3),D7
- MOVEQ #0,D0
- nlC0007B8
- ; ADD.L $82C-$7FC(A3),D0
-
- add.l 8(A3),D0
-
- SUBQ.W #1,D7
- BNE.S nlC0007B8
- ADD.L D0,$830-$7FC(A3)
- SUBQ.W #1,$820-$7FC(A3)
- MOVE.W $820-$7FC(A3),D7
- ADD.W D7,D7
- ADD.W D7,D7
- LEA nlC000952(PC),A6
- ADDA.L 0(A6,D7.W),A6
- ADDQ.L #8,A6
- MOVEQ #0,D2
- MOVE.W #$4000,D4
- MOVE.W #$4000,D5
- MOVE.L -(A0),D0
- nlC0007E6
- ; TST.W $7FC-$7FC(A3)
- ; BNE.L nlC000BA0
- MOVEQ #4,D1
- BSR.S nlC00086C
- ADD.W D7,D7
- ADD.W D7,D7
- MOVE.L A1,-(SP)
- LEA nlL00082C(PC),A1
- ADDA.L 0(A1,D7.W),A1
- JSR (A1)
- MOVEA.L (SP)+,A1
- nlC000804 CMPA.L A4,A1
- BEQ.S nlC000822
- CMPI.W #$10,D2
- BCS.S nlC0007E6
- SUBI.W #$10,D5
- ANDI.W #$3FF0,D5
- LEA 0(A2,D5.W),A5
- SUBI.W #$10,D2
- JSR (A6)
- BRA.S nlC000804
-
- nlC000822 MOVEM.L (SP)+,D1-D7/A0-A6
- MOVE.L $830-$7FC(A3),D0
- RTS
-
- nlL00082C dc.l Label24-nlL00082C
- dc.l Label25-nlL00082C
- dc.l Label26-nlL00082C
- dc.l Label27-nlL00082C
- dc.l Label28-nlL00082C
- dc.l Label29-nlL00082C
- dc.l Label30-nlL00082C
- dc.l Label31-nlL00082C
- dc.l Label32-nlL00082C
- dc.l Label33-nlL00082C
- dc.l Label34-nlL00082C
- dc.l Label35-nlL00082C
- dc.l Label36-nlL00082C
- dc.l Label37-nlL00082C
- dc.l Label38-nlL00082C
- dc.l Label39-nlL00082C
-
- nlC00086C SUBQ.W #1,D1
- MOVEQ #0,D7
- nlC000870 ADD.L D0,D0
- BNE.S nlC00087C
- MOVE.L -(A0),D0
- MOVE.W #$FFFF,CCR
- ADDX.L D0,D0
- nlC00087C ADDX.W D7,D7
- DBRA D1,nlC000870
- RTS
- Label24
- MOVEQ #0,D6
- BRA.S nlC0008D6
- Label25
- MOVEQ #1,D6
- BRA.S nlC0008D6
- Label26
- MOVEQ #2,D6
- BRA.S nlC0008D6
- Label27
- MOVEQ #3,D6
- BRA.S nlC0008D6
- Label28
- MOVEQ #4,D6
- BRA.S nlC0008D6
- Label29
- MOVEQ #5,D6
- BRA.S nlC0008D6
- Label30
- MOVEQ #1,D1
- BSR.S nlC00086C
- MOVEQ #6,D6
- ADD.W D7,D6
- BRA.S nlC0008D6
- Label31
- MOVEQ #1,D1
- BSR.S nlC00086C
- MOVEQ #8,D6
- ADD.W D7,D6
- BRA.S nlC0008D6
- Label32
- MOVEQ #2,D1
- BSR.S nlC00086C
- MOVEQ #10,D6
- ADD.W D7,D6
- BRA.S nlC0008D6
- Label33
- MOVEQ #3,D1
- BSR.S nlC00086C
- MOVEQ #14,D6
- ADD.W D7,D6
- BRA.S nlC0008D6
- Label34
- MOVEQ #5,D1
- BSR.S nlC00086C
- MOVEQ #$16,D6
- ADD.W D7,D6
- BRA.S nlC0008D6
- Label35
- MOVEQ #8,D1
- BSR.S nlC00086C
- MOVEQ #$36,D6
- ADD.W D7,D6
- nlC0008D6 ADD.W $824-$7FC(A3),D6
- MOVEQ #14,D1
- BSR.S nlC00086C
- ADD.W D4,D7
- MOVE.W D7,D3
- ANDI.W #$3FFF,D3
- SUBQ.W #1,D6
- nlC0008E8 SUBQ.W #1,D3
- ANDI.W #$3FFF,D3
- MOVE.B 0(A2,D3.W),D7
- SUBQ.W #1,D4
- ANDI.W #$3FFF,D4
- MOVE.B D7,0(A2,D4.W)
- ADDQ.L #1,D2
- DBRA D6,nlC0008E8
- RTS
- Label36
- MOVEQ #4,D1
- BSR.L nlC00086C
- MOVE.W D7,D6
- BRA.S nlC000918
- Label37
- MOVEQ #8,D1
- BSR.L nlC00086C
- MOVEQ #$10,D6
- ADD.W D7,D6
- nlC000918 ADD.W $826-$7FC(A3),D6
- BSR.L nlC000714
- SUBQ.W #1,D6
- nlC000922 SUBQ.W #1,D4
- ANDI.W #$3FFF,D4
- MOVE.B D7,0(A2,D4.W)
- ADDQ.L #1,D2
- DBRA D6,nlC000922
- RTS
- Label38
- MOVEQ #1,D6
- BRA.S nlC000942
- Label39
- MOVEQ #3,D1
- BSR.L nlC00086C
- MOVEQ #2,D6
- ADD.W D7,D6
- nlC000942 SUBQ.W #1,D6
- nlC000944 BSR.L nlC000714
- SUBQ.W #1,D4
- ANDI.W #$3FFF,D4
- MOVE.B D7,0(A2,D4.W)
- nlC000952 ADDQ.L #1,D2
- DBRA D6,nlC000944
- RTS
- nlC00095x
- ; dc.l Label43-nlC00095x
- ; dc.l Label42-nlC00095x
- ; dc.l Label41-nlC00095x
- ; dc.l Label40-nlC00095x
-
- dc.l Label_20-nlC00095x
- dc.l Label_19-nlC00095x
- dc.l Label_18-nlC00095x
- dc.l Label_17-nlC00095x
-
- ;Label40
- ; MOVEM.L D0/D2/D4/D5,-(SP)
- ; MOVEQ #15,D0
- ;nlC000970 MOVE.B (A5)+,D1
- ; ADD.B D1,D1
- ; ADDX.W D2,D2
- ; ADD.B D1,D1
- ; ADDX.W D3,D3
- ; ADD.B D1,D1
- ; ADDX.W D4,D4
- ; ADD.B D1,D1
- ; ADDX.W D5,D5
- ; ADD.B D1,D1
- ; ADDX.W D6,D6
- ; ADD.B D1,D1
- ; ADDX.W D7,D7
- ; DBRA D0,nlC000970
- ; MOVE.L $82C-$7FC(A3),D1
- ; MOVE.W D2,-(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D3,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D4,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D5,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D6,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D7,(A4)
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; MOVEM.L (SP)+,D0/D2/D4/D5
- ; RTS
-
- ;Label41
- ; MOVEM.L D0/D2/D4/D5,-(SP)
- ; MOVEQ #15,D0
- ;nlC0009BE MOVE.B (A5)+,D1
- ; ADD.B D1,D1
- ; ADDX.W D2,D2
- ; ADD.B D1,D1
- ; ADDX.W D3,D3
- ; ADD.B D1,D1
- ; ADDX.W D4,D4
- ; ADD.B D1,D1
- ; ADDX.W D5,D5
- ; ADD.B D1,D1
- ; ADDX.W D6,D6
- ; DBRA D0,nlC0009BE
- ; MOVE.L $82C-$7FC(A3),D1
- ; MOVE.W D2,-(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D3,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D4,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D5,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D6,(A4)
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; MOVEM.L (SP)+,D0/D2/D4/D5
- ; RTS
-
- ;Label42
- ; MOVEM.L D0/D2/D4/D5,-(SP)
- ; MOVEQ #15,D0
- ;nlC000A02 MOVE.B (A5)+,D1
- ; ADD.B D1,D1
- ; ADDX.W D2,D2
- ; ADD.B D1,D1
- ; ADDX.W D3,D3
- ; ADD.B D1,D1
- ; ADDX.W D4,D4
- ; ADD.B D1,D1
- ; ADDX.W D5,D5
- ; DBRA D0,nlC000A02
- ; MOVE.L $82C-$7FC(A3),D1
- ; MOVE.W D2,-(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D3,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D4,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D5,(A4)
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; MOVEM.L (SP)+,D0/D2/D4/D5
- ; RTS
-
- ;Label43
- ; MOVEM.L D0/D2/D4,-(SP)
- ; MOVEQ #15,D0
- ;nlC000A3C MOVE.B (A5)+,D1
- ; ADD.B D1,D1
- ; ADDX.W D2,D2
- ; ADD.B D1,D1
- ; ADDX.W D3,D3
- ; ADD.B D1,D1
- ; ADDX.W D4,D4
- ; DBRA D0,nlC000A3C
- ; MOVE.L $82C-$7FC(A3),D1
- ; MOVE.W D2,-(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D3,(A4)
- ; ADDA.L D1,A4
- ; MOVE.W D4,(A4)
- ; SUBA.L D1,A4
- ; SUBA.L D1,A4
- ; MOVEM.L (SP)+,D0/D2/D4
- ; RTS
-
- ; Section Buffer,BSS
-
- ;lbL06439C ds.l $1000
- ;lbL06839C ds.l $810
- ;Extra ds.b 64
-